An “Internet of Things” (IOT) is a network of physically tangible electronic or computerized “things,” such as environmental sensors, mobile devices, motion detectors, security as, and “smart” household appliances, that are equipped with network interfaces, computer processors, and, optionally, local user interfaces.
These IOT sensor devices collect data through sensors, cameras, or other monitoring means and transmit that data continuously, frequently, or in response to an occurrence of a triggering condition, to one or more remote IOT controllers through a network. Sensors may perform functions like reporting a current status of a household appliance, a smoke detector, or a motion sensor; or may give instructions to a monitored device in response to monitored data or in response to instructions received from the IOT controller over the network.
IOT controllers may in turn be managed by one or more remote IOT software applications that determine an overall operation of an IOT network and system and determine how to interpret and respond to data received from sensors and IOT controllers.
An IOT network, might for example, comprise a hundred carbon-monoxide detectors that each continuously monitors a background carbon-monoxide level in one unit of an apartment complex. When one of these sensors detects a dangerous level, it would automatically connect itself through a wireless connection to a remote IOT controller. This controller might then alert a building-management application running on a remote cloud-based IOT application server, and the application would in response transmit an emergency notification to a local fire department.
In such implementations, the application software and server may be deployed as virtual machines of a cloud-computing environment, by means of services purchased from an IaaS or PaaS service provider. These service providers typically allocate a fixed amount of network bandwidth to a virtual server, at the time the server is provisioned. This fixed bandwidth limit not later be adjusted upward or downward on a dynamic, ad hoc basis.
Because the application server's bandwidth limit is static, the bandwidth that the server can make available to each of its IOT controllers is also static or limited. This creates bottlenecks because, as sensors continually enter and leave the IOT network, each IOT controller must manage a continually varying number of sensors, each of which may have continuously varying bandwidth requirements.
There is currently no straightforward way for a cloud-based application server to provide to an IOT controller the dynamic, varying network bandwidth that the controller needs in order to respond to real-time changes in a number of sensors that the IOT controller must manage.